﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace Presentation
{
    public partial class QLKhoi : Form
    {        
        public QLKhoi()
        {
            InitializeComponent();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void QLKhoi_Load(object sender, EventArgs e)
        {            
            reload();            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            add();
        }

        private void add()
        {
            var khoi = new DTOKhoi()
            {
                TenKhoi = textBox1.Text
            };
            if (check(khoi))
            {
                BUSKhoi.Add(khoi.TenKhoi);
                MessageBox.Show("Khối đã được thêm vào danh sách", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                reload();
            }            
        }

        private void reload()
        {
            dg.DataSource = BUSKhoi.getAll();
            textBox1.Text = dg.SelectedRows[0].Cells[1].Value.ToString();
            dg.Columns[0].HeaderText = "Mã Khối";
            dg.Columns[1].HeaderText = "Tên Khối";
        }

        private void button2_Click(object sender, EventArgs e)
        {            
            if (dg.SelectedRows.Count > 0)
            {
                if(MessageBox.Show("Bạn có chắc muốn xóa?","Xác nhận xóa",MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    int makhoi = (int)dg.SelectedRows[0].Cells[0].Value;
                    BUSKhoi.Delete(makhoi);
                    MessageBox.Show("Thông tin khối đã được xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reload();
                }
            }            
        }

        private void button3_Click(object sender, EventArgs e)
        {            
            if(dg.SelectedRows.Count > 0){                
                var khoi = new DTOKhoi() {
                    TenKhoi = textBox1.Text,
                    MaKhoi = (int)dg.SelectedRows[0].Cells[0].Value
                };
                if (check(khoi))
                {
                    BUSKhoi.Edit(khoi.MaKhoi, khoi.TenKhoi);
                    MessageBox.Show("Thông tin khối đã được sửa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reload();                    
                }               
            }
        }

        private void dg_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBox1.Text = dg.SelectedRows[0].Cells[1].Value.ToString();            
        }

        private bool check(DTOKhoi khoi)
        {
            StringBuilder str = new StringBuilder();

            if (string.IsNullOrEmpty(khoi.TenKhoi))
            {                
                str.AppendLine("Xin vui lòng nhập đầy đủ thông tin");
            }
            
            if (BUSKhoi.isDuplicate(khoi))
            {
                str.AppendLine("Tên khối đã bị trùng.Vui lòng nhập tên khối khác");
            }

            if (str.Length > 0)
            {
                MessageBox.Show(str.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                add();
            }
        }
    }
}
